********************************************************************************
*                   Utilisation du BootLoader pour carte AJ                    *
********************************************************************************

1. Espace code rserv au BootLoader

Le BootLoader occupe les adresses allant de 0000h  5FFEh. Ces adresses sont
relatives  des instructions PIC24.
Le code de l'application doit donc dmarrer  l'adresse 6000h. Les vecteurs de 
RESET et d'interruptions doivent rester  leur emplacement natif.

Lors du linkage de l'application, nous vous prconisons de modifier le
fichier p24FJ128GB106.gld comme suit dans la section MEMORY :
MEMORY
{
  data  (a!xr) : ORIGIN = 0x800,         LENGTH = 0x4000
  reset        : ORIGIN = 0x0,           LENGTH = 0x4
  ivt          : ORIGIN = 0x4,           LENGTH = 0xFC
  aivt         : ORIGIN = 0x104,         LENGTH = 0xFC
  program (xr) : ORIGIN = 0x6000,        LENGTH = 0xF7FA
  config3      : ORIGIN = 0x157FA,       LENGTH = 0x2
  config2      : ORIGIN = 0x157FC,       LENGTH = 0x2
  config1      : ORIGIN = 0x157FE,       LENGTH = 0x2
}


2. Fuse-bits

Les fuse-bits sont automatiquement forcs par le BootLoader quelque soit leur
valeur dans le fichier HEX. Ces valeurs sont :
CW1 = 0x1FF9
CW2 = 0x932D
CW3 = 0xFFFF
Le BootLoader ne gnre pas d'erreur si les fuse-bits du fichier HEX sont 
diffrents de ceux par dfaut.


3. Gestion de la LED rouge

Pendant le fonctionnement du BootLoader, la LED est allume fixe. Elle est
teinte quand le BootLoader passe le contrle  l'application.

Si une erreur est dtecte, la LED devient clignotante. Elle s'allume un nombre
de fois correspondant au numro de l'erreur dtecte puis s'teint quelques
centaines de ms puis recommence ce cycle indfiniment.
Les code d'erreur gnrs sont :
1 = Fichier HEX non conforme pour carte T410 mmoire Flash interne
2 = Fichier HEX non conforme pour carte T410 mmoire Flash externe
3 = Fichier HEX non conforme pour carte T410 mmoire Eeprom
4 = Fichier HEX non conforme pour carte AJ mmoire Flash interne
5 = Fichier HEX non conforme pour carte T410 mmoire Eeprom
6 = Erreur de programmation d'une mmoire sur la carte T410
7 = Erreur de programmation d'une mmoire sur la carte AJ

Un fichier HEX est non conforme pour une des raisons suivantes :
- Checksum incorrecte dans au moins une ligne.
- Fichier sans data  programmer
- Fichier sans ligne marqueur de fin de fichier
- Fichier avec au moins un opcode HEX inconnu.


4. Nom des fichiers HEX sur la cl USB

Les noms de fichier sur la cl USB doivent tre au format DOS 8.3 avec des
caractres ASCII uniquement (pas d'accent et autre). La cl doit tre formate
en FAT16. Les fichiers doivent tre  la racine de la cl.
Les noms suivants doivent tre donns au fichier  programmer :
- TQI*.HEX : fichier pour carte T410 mmoire Flash interne
- TQE*.HEX : fichier pour carte T410 mmoire Flash externe
- TQP*.HEX : fichier pour carte T410 mmoire Eeprom
- AJI*.HEX : fichier pour carte AJ mmoire Flash interne
- AJP*.HEX : fichier pour carte AJ mmoire Eeprom
* signifie que vous pouvez ajouter de 0  5 caractres ASCII  votre convenance
pour y indiquer un numro de version par exemple.
Si plusieurs fichiers rpondent au mme nom (ex. TQI_V10.HEX et TQI_V11.HEX), il 
est impossible de prdire celui que le BootLoader retiendra.
Une fois programm correctement sur la mmoire cible, chaque fichier .HEX est
renomm en .OLD sur la cl USB.


5. Appel du BootLoader depuis l'application

L'appel du BootLoader depuis l'application se fait en excutant la fonction
suivante.
void AppelBootLoader (void)
{
    *(U8*)0x850 = 0xA5;
    asm("RESET");    
}


6. Dmarrage application et gestion des interruptions

A la mise sous tension de la carte AJtech, le processus suivant est excut :
  SI le bit RCON.SWR = 0 ALORS        // cas d'une mise sous tension
    Lancement du BootLoader;
  SINON SI ram[0x850] <> 0x5A ALORS   // cas d'un appel depuis l'application
    Lancement du BootLoader;
  SINON                               // cas d'un appel depuis le BootLoader
    Lancement de l'application;
  FINSI
BootLoader:
  SI fichier TQP*.HEX sur cl USB ALORS
    ARRET si fichier non conforme;
    Programmtion de la mmoire Eeprom sur la T410;
    ARRET si erreur de programmation;
  FINSI
  SI fichier TQE*.HEX sur cl USB ALORS
    ARRET si fichier non conforme;
    Programmtion de la mmoire Flash externe sur la T410;
    ARRET si erreur de programmation;
  FINSI
  SI fichier TQI*.HEX sur cl USB ALORS
    ARRET si fichier non conforme;
    Programmtion de la mmoire Flash interne sur la T410;
    ARRET si erreur de programmation;
    Lancement de l'application sur la T410;
  FINSI
  SI fichier AJP*.HEX sur cl USB ALORS
    ARRET si fichier non conforme;
    Programmtion de la mmoire Eeprom sur la AJtech;
    ARRET si erreur de programmation;
  FINSI
  SI fichier AJI*.HEX sur cl USB ALORS
    ARRET si fichier non conforme;
    Programmtion de la mmoire Flash interne sur la AJtech;
    ARRET si erreur de programmation;
    Lancement de l'application sur la T410;
  FINSI
  Attente de connexion avec interface X2D pendant 1s maximum;
  SI connexion tablie OU appel depuis l'application OU pas d'application ALORS
    Attendre indfiniment et traiter les commandes reues;
  FINSI
  Lancer l'application sur la AJtech;

Le BootLoader intercepte toutes les interruptions du PIC24 (IVT et ALTIVT). Il
les redirige ensuite vers une table d'o il appelle la routine de traitement. Ce 
procd entrane l'excution d'une instruction GOTO supplmentaire par rapport 
au traitement standard des interruptions.


7. Programmation depuis le programme PC

La programmation de fichiers HEX depuis un PC se fait avec le logiciel L48LPC.
Ce logiciel ne ncessite aucune installation pralable. Il peut tre lanc
depuis n'importe quel mdia. Il n'est compos que du seul fichier EXE.
La procdure d'utilisation du logiciel est la suivante :
  Dmarrer le programme L48LPC.exe;
  Slectionner la carte cible (AJTECH ou T410);
  Slectionner la mmoire  programmer (Flash interne, externe ou Eeprom);
  Slectionner le port COM reli  la carte AJtech avec le bouton [Port COM];
    (Seuls les ports COM disponibles sur le PC sont lists)
  Slectionner le fichier HEX  programmer avec le bouton [Fichier];
  Lancer la programmation avec le bouton [Programmation];
  Une fentre affiche le droulement des tapes :
    Lecture du fichier HEX;
    Analyse du fichier pour dtecter d'ventuelles erreurs;
    Connexion avec la carte AJtech;
    Envoi des donnes du fichier HEX;
    Finalisation de la programmation (contrle des donnes par CRC32);

Le bouton [Lancer Appli] permet de dmarrer l'application programme sur la
carte slectionne.
  
La carte AJtech doit tre mise sous tension aprs l'appui sur [Programmation].
Le port de communication utilis sur la carte AJtech est le port X2D. Ce mme
port est galement utilis pour la programmation de la carte T410  travers la
carte AJtech. Il est galement possible de programmer la carte T410 en se
connectant directement sur son propre port srie.

  